import { createRouter, createWebHistory } from "vue-router"
import Index from "@/pages/index.vue"
import NotFound from "@/pages/404.vue"
import Login from "@/pages/login.vue"
import Admin from "@/layouts/admin.vue"
import GoodList from "@/pages/goods/list.vue"
import cateGoryList from "@/pages/category/list.vue"
import UserList from "@/pages/user/list.vue"
import OrderList from "@/pages/order/list.vue"
import CommentList from "@/pages/comment/list.vue"
import ImageList from "@/pages/image/list.vue"
import NoticeList from "@/pages/notice/list.vue"
import SettingBase from "@/pages/setting/base.vue"
import CouponList from "@/pages/coupon/list.vue"
import ManagerList from "@/pages/manager/list.vue"
import Access from "@/pages/access/list.vue"
import RoleList from "@/pages/role/list.vue"
import SkusList from "@/pages/skus/list.vue"
import LevelList from "@/pages/level/list.vue"
import SettingBuy from "@/pages/setting/buy.vue"
import SettingShip from "@/pages/setting/ship.vue"
import DistributionList from "@/pages/distribution/index.vue"
import DistributionSetting from "@/pages/distribution/setting.vue"
 
//默认路由,所有用户共享
const routes = [
    {
      path: "/",
      name:"admin",
      component: Admin,
    },
    {
      path: "/login",
      component: Login,
      meta: {
        title: "登录页",
      },
    },
    {
      path: "/:pathMatch(.*)*",
      name: "NotFound",
      component: NotFound,
    }
  ]


  //动态路由，用于匹配菜单--动态添加路由---前端预定义的所有路由配置
  const asyncRoutes = [{
          path: "/",
          name:"/",
          component: Index,
          meta: {
            title: "后台首页",
          }
        }, 
        {
          path: "/goods/list",
          name: "/goods/list",
          component: GoodList,
          meta: {
            title: "商品管理",
          },
        },
        {
          path: "/category/list",
          name: "/category/list",
          component: cateGoryList,
          meta: {
            title: "分类列表",
          },
        },{
          path: "/user/list",
          name: "/user/list",
          component: UserList,
          meta: {
            title: "用户列表",
          },
        },{
          path: "/order/list",
          name: "/order/list",
          component: OrderList,
          meta: {
            title: "列表订单",
          },
        },{
          path: "/comment/list",
          name: "/comment/list",
          component: CommentList,
          meta: {
            title: "评价列表",
          },
        },{
          path: "/image/list",
          name: "/image/list",
          component: ImageList,
          meta: {
            title: "图库列表",
          },
        },{
          path: "/notice/list",
          name: "/notice/list",
          component: NoticeList,
          meta: {
            title: "公告列表",
          },
        },{
          path: "/setting/base",
          name: "/setting/base",
          component: SettingBase,
          meta: {
            title: "配置",
          },
        },{
          path: "/coupon/list",
          name: "/coupon/list",
          component: CouponList,
          meta: {
            title: "优惠卷列表",
          },
        },{
          path: "/manager/list",
          name: "/manager/list",
          component: ManagerList,
          meta: {
            title: "管理员列表",
          },
        },{
          path: "/access/list",
          name: "/access/list",
          component: Access,
          meta: {
            title: "菜单权限管理",
          },
        },
        {
          path: "/role/list",
          name: "/role/list",
          component: RoleList,
          meta: {
            title: "角色管理"
          },
        },
        {
          path: "/skus/list",
          name: "/skus/list",
          component: SkusList,
          meta: {
            title: "规格管理"
          },
        },
        {
          path: "/level/list",
          name: "/level/list",
          component: LevelList,
          meta: {
            title: "会员等级"
          },
        },
        {
          path: "/setting/buy",
          name: "/setting/buy",
          component: SettingBuy,
          meta: {
            title: "支付设置"
          },
        },
        {
          path: "/setting/ship",
          name: "/setting/ship",
          component: SettingShip,
          meta: {
            title: "物流设置"
          },
        },
        {
          path: "/distribution/index",
          name: "/distribution/index",
          component: DistributionList,
          meta: {
            title: "分销员管理"
          },
        },
        {
          path: "/distribution/setting",
          name: "/distribution/setting",
          component: DistributionSetting,
          meta: {
            title: "分销设置"
          },
        }
      ]



export const router = createRouter({
    history: createWebHistory(),
    routes
})



//动态添加路由的方法--递归:确保所有子菜单的路由都被注册
export function addRoutes(menus){
  //是否有新的路由被添加
  let hasNewRoutes = false
  //遍历菜单数组，添加对应路由
    const findAndAddRouterByMenus = (arr) =>{
        arr.forEach(e=>{
          //查找与菜单路径匹配的路由配置
          let item = asyncRoutes.find(o=>o.path == e.frontpath)
          //如果找到并且该路由尚未注册
          if(item && !router.hasRoute(item.path)){
          // 将路由添加到父级路由名为“admin”的下面
            router.addRoute("admin",item)
            hasNewRoutes = true//标记有新路由添加
          }
          //如果当前菜单有子菜单，递归处理子菜单
          if(e.child && e.child.length > 0){
            findAndAddRouterByMenus(e.child)
          }
        })
 }
         //开始递归处理菜单
        findAndAddRouterByMenus(menus)
      //返回是否添加了新路由
      return hasNewRoutes  
}





